package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.AccounLoginInfo;
import com.zb.entity.ZjNetworkStrategy;
import com.zb.vo.NetworkStrategyVo;
import com.zb.vo.NetworkWithdrawWithFeeEmpRootUpdateVo;
import com.zb.vo.OrderWithdrawHandlingFeeVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 网点策略表 服务类
 * </p>
 *
 * @author WEN
 * @since 2023-10-18
 */
public interface ZjNetworkStrategyService extends IService<ZjNetworkStrategy> {

    /**
     * 保存或更改服务商策略
     * @param custAccId 商家ID
     * @param id 服务商ID
     * @param strategy  服务商策略
     */
    void save(Long custAccId, Long id, NetworkStrategyVo strategy);

    /**
     * 根据ID获取接收策略
     * @param id 服务商ID
     * @return
     */
    ZjNetworkStrategy isAutoSureReceiveOrder(Long id);

    /**
     * 批量更新服务商接单策略
     * @param ids 服务商ID
     * @param autoSureReceiveOrder 是否自动接单：false-手动确认 true-自动接单
     */
    void updateAutoSureReceiveOrderBatchById(List<Long> ids, boolean autoSureReceiveOrder);

    /**
     * 批量更新服务商审核取消工单策略
     * @param ids 服务商ID
     * @param autoCheckCancelOrder 是否自动审核取消工单：false-手动审核，true-自动审核
     */
    void updateAutoCheckCancelOrderBatchById(List<Long> ids, boolean autoCheckCancelOrder);

    /**
     * 批量更新服务商审核结单策略
     * @param ids 服务商ID
     * @param autoCheckEndOrder 是否自动审核结单：false-手动审核，true-自动审核
     */
    void updateAutoCheckEndOrderBatchById(List<Long> ids, boolean autoCheckEndOrder);

    /**
     * 批量更新允许更改备件价格
     * @param ids 服务商ID
     * @param enableUpdateSparePrice 是否允许更改备件价格：false-关闭，true-允许修改
     */
    void updateEnableUpdateSparePriceBatchById(List<Long> ids, boolean enableUpdateSparePrice);

    /**
     * 批量更改提现手续费
     * @param handlingFeeVo
     */
    void updateOrderWithdrawHandlingFee(OrderWithdrawHandlingFeeVo handlingFeeVo);

    /**
     * 获取手续费策略
     * @param networkId 服务商ID
     * @return
     */
    Map<String, Object> getNetworkWithdrawHandlingFeeStrategy(Long networkId);

    /**
     * 批量更改提现策略
     * @param custAccId 商家ID
     * @param withdrawEmpRootVo
     */
    void updateWithdrawEmpRoot(Long custAccId, NetworkWithdrawWithFeeEmpRootUpdateVo withdrawEmpRootVo);


    /**
     * 批量更改查询费用策略
     * @param custAccId 商家ID
     * @param withdrawEmpRootVo
     */
    void updateSelectFeeEmpRoot(Long custAccId, NetworkWithdrawWithFeeEmpRootUpdateVo withdrawEmpRootVo);


}
